/**
 * Copyright 2009-2010 - YangJiandong(chunquedong)
 * 
 * This file is part of ChunMap project
 * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE(Version >=3)
 * 你可以自由复制、传播本项目的下载包文件，但必须保持其完整性。
 * 我们不用对使用中的风险及由此造成的损失承担任何责任。
 * 详细情况请见《ChunMap许可协议》。

 * 想了解更多有关ChunMap的信息，请访问http://code.google.com/p/chunmap/
 */
package chunmap.app.bench;

import java.util.LinkedList;

/**
 * 命令执行与管理，如撤销
 * @author chunquedong
 * 
 */
public class CommandManager {
	LinkedList<Command> doCommands=new LinkedList<Command>();
	LinkedList<Command> undoCommands=new LinkedList<Command>();
	
	public void execute(Command cmd){
		cmd.execute();
		doCommands.push(cmd);
	}
	
	public void undo(){
		if(doCommands.size()==0)return;
		
		Command cmd=doCommands.pop();
		if(cmd.isUndoable()){
			cmd.rollback();
		}
		undoCommands.push(cmd);
	}
	
	public void redo(){
		if(undoCommands.size()==0)return;
		
		Command cmd=undoCommands.pop();
		execute(cmd);
	}
}
